package cn.edu.xjtu.work.isPalindrome;

/**
 * 验证回文串
 * 
 * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
 * 
 * 说明：本题中，我们将空字符串定义为有效的回文串。
 */
public class Solution {
  public static void main(String[] args) {
    String s = "0P";
    System.out.println(isPalindrome1(s));
  }

  public static boolean isPalindrome(String s) {
    if (s == null || s.length() == 0) {
      return true;
    }
    s = s.toLowerCase();

    for (int i = 0; i < s.length() / 2; i++) {
      if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
        return false;
      }
    }
    return true;
  }

  public static boolean isPalindrome1(String s) {
    if (s == null || s.length() == 0) {
      return true;
    }
    s = s.toLowerCase();
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
      char ch = s.charAt(i);
      if (Character.isLetterOrDigit(ch)) {
        sb.append(ch);
      }
    }
    for (int i = 0; i < sb.length() / 2; i++) {
      if (sb.charAt(i) != sb.charAt(sb.length() - 1 - i)) {
        return false;
      }
    }
    return true;
  }
}
